#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// hello world
//int main()
//{
//	printf("hello world!");
//	printf("hello world!");
//	printf("hello world!");
//
//	return 0;
//}





// 数据类型

//int a = 1; // 全局变量
//
//int main()
//{
//	int a = 10; // 局部变量
//	printf("%zd\n", sizeof(char));      // 一个字节
//	printf("%zd\n", sizeof(short));     // 两个字节
//	printf("%zd\n", sizeof(int));       // 四个字节
//	printf("%zd\n", sizeof(long));      // 四个字节
//	printf("%zd\n", sizeof(long long)); // 八个字节
//	printf("%zd\n", sizeof(float));     // 四个字节
//	printf("%zd\n", sizeof(double));    // 八个字节
//	return 0;
//}


// 局部变量和全局变量命名一样时，局部优先

//int a = 100;
//int main()
//{
//	int a = 10;
//	printf("a=%d\n", a);
//	return 0;
//}

// 变量的使用
//int main()
//{
//    int sum;
//    int num1 = 1;
//    int num2 = 2;
//    sum = num1 + num2;
//    printf("sum=%d\n", sum);
//    return 0;
//}



// 写一段代码，计算两个整数的和
// scanf是一个输入函数
// printf是一个输出函数
//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	scanf("%d %d", &num1, &num2);
//	int sum = num1 + num2;
//	printf("%d\n", sum);
//	return 0;
//	
//}





// 变量的作用域

//int a = 10; // 全局变量
//int main()
//{
//	{
//		printf("a=%d\n", a);
//	}
//	printf("a=%d\n", a);
//	return 0;
//}






#define MAX 100
#define STR "abcde"

// 常量的分类
//int main()
//{
//	30;
//	3.14;
//	'w'; // 字符
//	"abc"; // 常变量
//
//	const int a = 10; // const修饰的常变量
//	printf("%d\n", MAX);
//
//	int b = MAX;
//	printf("%d\n", b);
//
//	printf("%s\n", STR);
//	return 0;
//}







// 字符串
//#include <string.h>
//int main()
//{
//	char ch = 'w';
//	char arr[] = "abcdefg";
//	char arr1[] = { 'a','b','c','d','e','f','g' };
//	printf("%s\n", arr);
//
//	int len = strlen("abc");
//	printf("%d\n", len);
//
//	// 转义字符
//	printf("abcn");
//	printf("abc\n");
//
//	printf("%c\n", '\'');
//	printf("\"\n");
//	printf("abcd0ef\n");
//	printf("abcd\0ef");
//	printf("abcd\\0ef\n");
//	printf("%d\n", '\130');
//	printf("%c\n", '\130');
//	printf("%d\n", '\x60');
//	printf("%c\n", '\x60');
//	printf("%d\n", strlen("c:\test\628\test.c"));
//		
//	return 0;
//	
//}



// 选择语句

//int main()
//{
//	int input = 0;
//	printf("要好好学习吗（0/1）？");
//	scanf("%d", &input);
//	if (input == 1)
//	{
//		printf("考上清华/北大\n");
//	}
//	else
//	{
//		printf("烤上红薯\n");
//	}
//	return 0;
//
//}




// 循环语句

//int main()
//{
//	int line = 0;
//	printf("好好学习");
//
//	while (line < 20000)
//	{
//		printf("写代码:%d\n", line);
//		line++;
//	}
//	if (line >= 20000)
//	{
//		printf("努力\n");
//	}
//	else
//	{
//		printf("继续加油\n");
//	}
//	return 0;
//}





// 函数
//int Add(int x, int y)
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}
//
//int main()
//{
//	int n1 = 0;
//	int n2 = 0;
//	// 输入
//	scanf("%d %d", &n1, &n2);
//	// 求和
//	int sum = Add(n1, n2);
//	// 打印
//	printf("%d\n", sum);
//
//	return 0;
//}



//int main()
//{
//	// 数组
//	int arr[10] = { 10, 5, 6, 8, 9, 12, 14, 11, 2, 4 };
//	printf("%d\n", arr[8]);
//	int i = 0;
//	while (i < 10)
//	{
//		printf("%d\n", arr[i]);
//		i = i + 1;
//	}
//	return 0;
//}





// 作业一：输出小飞机
//int main()
//{
//
//	printf("     **     \n");
//	printf("     **     \n");
//	printf("************\n");
//	printf("************\n");
//	printf("     **     \n");
//	printf("     **     \n");
//	return 0;
//}




// 作业二：输出学生信息
//int main()
//{
//	char name[10];
//	int age;
//	enum Sex
//	{
//		MALE,
//		FEMALE
//	} Sex;
//	printf("请输入姓名");
//	scanf("%s", &name);
//	printf("请输入年龄");
//	scanf("%d", &age);
//	printf("请输入性别（0表示男性，1表示女性）");
//	scanf("%d", &Sex);
//	printf("Name Age Gender\n");
//	printf("------------------------\n");
//	printf("%s %d %s", name,age,Sex == MALE ? "man":"woman");
//	return 0;
//
//}




void test()
{
	static int a = 1;
	a++;
	printf("%d\n", a);
}

// typedef
typedef unsigned int uint;

// define定义常量和宏
#define NUM 100

// 结构体
struct Stu
{
	// 成员
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};

int main()
{
	/*int a = 7 / 2;
	printf("%d\n", a);
	int b = 7 % 2;
	printf("%d\n", b);
	float c = 7 / 2.0;
	printf("%.lf", c);*/


	// 条件操作符
	/*int a = 10;
	int b = 20;
	int r = a > b ? a : b;
	printf("r = %d\n", r);*/


	//逗号表达式
	/*int a1 = 10;
	int b1 = 20;
	int c1 = 0;
	int d = (c1 = a1 - 2, a1 = b1 + c1, c1 - 3);
	printf("%d\n", d);*/



	// typedef
	/*unsigned int num = 0;
	uint num2 = 1;*/


	// static
	/*int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}*/




	// define 定义常量
	/*printf("%d\n", NUM);
	int n = NUM;
	printf("%d\n", n);
	int arr[NUM] = { 0 };
	return 0;*/




	// 指针
	int a = 10; // 向内存申请四个字节，存储10
	&a; // 取地址操作符
	printf("%p\n", &a);
	int* p = &a; // p是指针变量
	printf("%p\n",p);
	*p = 20;
	printf("%d", a);


	struct Stu s = { "张三",20,"nan","15623047896" };
	// 结构体对象.成员名
	printf("%s %d %s %s\n", s.name, s.age, s.sex, s.tele);
	return 0;
}